package BehavioralPattern.Iterator;

import java.util.ArrayList;
import java.util.List;

/**
 * @Classname : ConcreteAggregate
 * @Description : 具体容器
 * @Author : chentianyu
 * @Date 2023/3/5 14:53
 */


public class ConcreteAggregate implements Aggregate {

    List<Object> list = new ArrayList<>();

    public List<Object> getList() {
        return this.list;
    }

    @Override
    public void add(Object object) {
        list.add(object);
    }

    @Override
    public void remove(Object object) {
        list.remove(object);
    }

    @Override
    public Iterator iterator() {
        return new ConcreteIterator(this);
    }

//    // 获取内部类迭代器
//    public Iterator iterator() {
//        return new ConcreteIterator();
//    }
//
//    // 内部类迭代器
//    class ConcreteIterator implements Iterator {
//
//        private int cursor = 0;
//
//        @Override
//        public Object next() {
//            Object object = null;
//            if (cursor < list.size()) {
//                object = list.get(cursor++);
//            }
//            return object;
//        }
//
//        @Override
//        public boolean hasNext() {
//            return cursor < list.size();  // 注意最后一个元素也认为有后继元素
//        }
//
//        @Override
//        public boolean remove() {
//            if (list.isEmpty()) return false;
//            list.remove(cursor);
//            return true;
//        }
//    }
}
